﻿//-------------------------------------------------------------------
//	Copyright (c) 2010-2014  Zhirnov Andrey
//	This file is part of the "UX Standard Lib" project.
//	See copyright notice in "UX_STL_Ext.h".
//-------------------------------------------------------------------

#ifndef _UXS_SHAPE_TYPE_H
#define _UXS_SHAPE_TYPE_H

#pragma once

#include "MathTypesExt.h"

namespace UX_STL
{
namespace UXMathExt
{


	//
	// 2D Shape Type
	//

	namespace e_shape_2d
	{
		enum	type
		{
			RECT,
			CIRCLE,
			BITMAP,
		};
	}


	//
	// Shape 2D
	//

	/*template <typename T, e_shape_2d::type S>
	struct TShape2D
	{
		STATIC_WARNING( "unknown shape type" );


		bool Intersect(const TRect<T> &sRect) const;
		bool Intersect(const TVec<T,2> &sLinePoint0, const TVec<T,2> &sLinePoint1) const;

		bool PointInShape(const TVec<T,2> &sPoint) const;
	};



	//
	// Bitmap Shape 2D
	//

	/*template <typename T, typename B>
	struct TShape2D<T, e_shape_2d::BITMAP>
	{
	private:
		TArray2D<T>		_aBitmap;
		B				_tScale;

	public:
		TShape2D();

		void Set(const usize width, const usize height, const B scale);
		void Set(const usize radius, const B scale);
		void Set(const TArray2D<T> &aBitmap, const B scale);
		void Set(const array<T> &aArray, const usize width, const usize height, const B scale);
		
		void SetPoint(const TVec<T,2> &sPoint);
		void CutPoint(const TVec<T,2> &sPoint);

		bool Intersect(const TRect<T> &sRect) const;
		bool Intersect(const TVec<T,2> &sLinePoint0, const TVec<T,2> &sLinePoint1) const;

		bool PointInShape(const TVec<T,2> &sPoint) const;
	};*/

//-------------------------------------------------------------------

}	// UXMathExt
}	// UX_STL

#endif	// _UXS_SHAPE_TYPE_H